// 在像C#和Java这样的语言中，可以使用泛型来创建可重用的组件，一个组件可以支持多种类型的数据。
function add<T>(x: T): T {
  return x;
}

add<string>("1");
add<number>(1);
add<boolean>(false);

interface MyArray<T> {
  [index: number]: T;
}

const arr: MyArray<number> = [1, 2, 3, 4, 5];
const arr1: Array<string | boolean> = ["1", "2", true];

class Person<T> {
  name: string;
  age: T;
  constructor(name: string, age: T) {
    this.name = name;
    this.age = age;
  }
}

// new Person("张三", 16);

// new Person("李四", "20");

// new Person("李四", true);

// // let x = 3

// // x = '123'

// let arr123 = [1, 2, null, true, "123"];
